#include <iostream>

struct blob
{
    int a;
    char b[10];
};
template <class Type>
void recycle(Type t)
{
    std::cout << "match the prototype \"template <class Type> void recycle(Type t);\"" << std::endl;
}

template <class Type>
void recycle(Type * t)
{
    std::cout << "match the prototype \"template <class Type> void recycle(Type * t);\"" << std::endl;
}

void DoMoreSpecializedTemplateMacth()
{
    struct blob ink = {25, "spots"};
    recycle(&ink);
}

int main(int argc, char const *argv[])
{
    DoMoreSpecializedTemplateMacth();
    return 0;
}
